//
//  FMDBDataAccess.h
//  iTeVe
//
//  Created by Pedro Gonzalez on 01/02/14.
//  Copyright (c) 2014 SISI Software. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "FMDatabase.h"
#import "FMResultSet.h"
#import "Utility.h"
#import "Aliquota.h"
#import "Articolo.h"
#import "ListinoArticolo.h"
#import "Listino.h"
#import "Cliente.h"
#import "Testa.h"
#import "Deposito.h"
#import "Pagamento.h"
#import "Agente.h"
#import "Trasporto.h"
#import "Banca.h"
#import "Tipimov.h"

#import "RigaDettaglio.h"
#import "TestaVisualizzazione.h"

@interface FMDBDataAccess : NSObject
{
    
}


// ALIQUOTE IVA
-(NSMutableArray *) getAliquote;
-(Aliquota *) getAliquotaxId:(int)id;
-(Aliquota *) getAliquotaxCodice:(NSString *)codice;
-(BOOL) updateAliquota:(Aliquota *) aliquota;
-(BOOL) insertAliquota:(Aliquota *) aliquota;
-(BOOL) removeAliquota:(Aliquota *) aliquota;


// ARTICOLI
-(NSMutableArray *) getArticoli:(NSString *)filtro;
-(Articolo *) getArticoloxId:(int)id;
-(Articolo *) getArticoloxCodice:(NSString *)codart;
-(BOOL) updateArticolo:(Articolo *) articolo;
-(BOOL) insertArticolo:(Articolo *) articolo;
-(BOOL) removeArticolo:(Articolo *) articolo;

// LISTINI DI VENDITA ARTICOLO
-(NSMutableArray *) getListiniVenditaArticolo:(Articolo *)articolo;

-(ListinoArticolo *) getListinoArticolo:(Articolo *)articolo :(Listino*)listino;
-(ListinoArticolo *) getListinoArticoloxCodice:(NSString *)codlis codiceArticolo:(NSString *)codart;
-(BOOL) updateListinoArticolo:(ListinoArticolo *) listino;
-(BOOL) insertListinoArticolo:(ListinoArticolo *) listino;
-(BOOL) removeListinoArticolo:(ListinoArticolo *) listino;


// TIPI MOVIMENTO
-(NSMutableArray *) getTipiMov;
-(NSMutableArray *) getTipiMovTV;
-(Tipimov *) getTipiMovxCodice:(NSString *)codmov;
-(BOOL) updateTipiMov:(Tipimov *) tipomov;
-(BOOL) insertTipiMov:(Tipimov *) tipomov;
-(BOOL) removeTipiMov:(Tipimov *) tipomov;


// LISTINI
-(NSMutableArray *) getListini;
-(Listino *) getListinoxCodice:(NSString *)codlis;
-(BOOL) updateListino:(Listino *) listino;
-(BOOL) insertListino:(Listino *) listino;
-(BOOL) removeListino:(Listino *) listino;

// DEPOSITI
-(NSMutableArray *) getDepositi;
-(Deposito *) getDepositoxCodice:(NSString *)coddep;
-(BOOL) updateDeposito:(Deposito *) deposito;
-(BOOL) insertDeposito:(Deposito *) deposito;
-(BOOL) removeDeposito:(Deposito *) deposito;


// AGENTI
-(NSMutableArray *) getAgenti;
-(Agente *) getAgentexCodice:(NSString *)codage;
-(BOOL) updateAgente:(Agente *) agente;
-(BOOL) insertAgente:(Agente *) agente;
-(BOOL) removeAgente:(Agente *) agente;

// TRASPORTO
-(NSMutableArray *) getTrasporto;
-(Trasporto *) getTrasportoxCodice:(NSString *)codtra;
-(BOOL) updateTrasporto:(Trasporto *) trasporto;
-(BOOL) insertTrasporto:(Trasporto *) trasporto;
-(BOOL) removeTrasporto:(Trasporto *) trasporto;


// BANCHE
-(NSMutableArray *) getBanche;
-(Banca *) getBancaxCodice:(NSString *)codban;
-(BOOL) updateBanca:(Banca *) banca;
-(BOOL) insertBanca:(Banca *) banca;
-(BOOL) removeBanca:(Banca *) banca;



// CONDIZIONE DI PAGAMENTO
-(NSMutableArray *) getCondizioniPagamento;
-(Pagamento *) getCondizionePagamentoxCodice:(NSString *)codpag;
-(BOOL) updateCondizionePagamento:(Pagamento *) pagamento;
-(BOOL) insertCondizionePagamento:(Pagamento *) pagamento;
-(BOOL) removeCondizionePagamento:(Pagamento *) pagamento;


// TESTA
-(NSMutableArray *) getTesta:(NSString *)filtro;
-(NSMutableArray *) getTestaForVisualizzazione:(NSString *)filtro;
-(Testa *) getTestaxId:(int)idtesta;
-(BOOL) updateTesta:(Testa *) testa;
-(BOOL) insertTesta:(Testa *) testa;
-(BOOL) removeTesta:(Testa *) testa;

// DETTAGLIO
-(NSMutableArray *) getDettaglio:(int )idtesta;
-(BOOL) insertDettaglio:(NSMutableArray *) dettaglio;
-(BOOL) removeDettaglio:(int) idtesta;


// CLIENTI
-(NSMutableArray *) getClienti:(NSString *)filtro :(NSDate *)ultimamodifica;
-(Cliente *) getClienteXid:(int )idCliente;
-(Cliente *) getClienteXCampox:(NSString *)camporicerca :(NSString *)valore;
-(BOOL) updateCliente:(Cliente *) cliente;
-(BOOL) insertCliente:(Cliente *) cliente;

-(void) aggiornoTabelle;


@end